import log from "../log/log.js";
let tag = "login-manager";

// 从本地存储获取token
function getTokenFromStorage() {
    try {
        return uni.getStorageSync('userToken') || '';
    } catch (e) {
        log.error(tag, "从本地存储获取token失败:", e);
        return '';
    }
}

// 从本地存储获取用户名
function getUserNameFromStorage() {
    try {
        return uni.getStorageSync('userName') || '';
    } catch (e) {
        log.error(tag, "从本地存储获取用户名失败:", e);
        return '';
    }
}

// token
var token = getTokenFromStorage();
// 用户名
var userName = getUserNameFromStorage();

export default {
    setToken : function(newToken){
        log.info(tag, `setToken: ${newToken}`)
        token = newToken
        try {
            // 将token保存到本地存储
            uni.setStorageSync('userToken', newToken);
            log.info(tag, "token已保存到本地存储");
        } catch (e) {
            log.error(tag, "保存token到本地存储失败:", e);
        }
    },
    
    // 保存用户名
    setUserName: function(newUserName) {
        log.info(tag, `setUserName: ${newUserName}`);
        userName = newUserName;
        try {
            uni.setStorageSync('userName', newUserName);
            log.info(tag, "用户名已保存到本地存储");
        } catch (e) {
            log.error(tag, "保存用户名到本地存储失败:", e);
        }
    },
    
    // 获取用户名
    getUserName: function() {
        return userName;
    },
    
    isLoggedIn: function(){
        let isLoggedIn = (token && token.length>0);
        log.info(tag, `isLoggedIn: ${isLoggedIn}`);
        return isLoggedIn;
    },
    
    // 获取 token
    getToken: function() {
        return token;
    },
    
    // 清除登录状态（保留用户名）
    logout: function() {
        log.info(tag, "logout");
        token = '';
        try {
            uni.removeStorageSync('userToken');
            log.info(tag, "token已从本地存储移除");
        } catch (e) {
            log.error(tag, "从本地存储移除token失败:", e);
        }
    },
    
    // 完全清除登录状态（包括用户名）
    logoutAll: function() {
        log.info(tag, "logoutAll");
        token = '';
        userName = '';
        try {
            uni.removeStorageSync('userToken');
            uni.removeStorageSync('userName');
            log.info(tag, "token和用户名已从本地存储移除");
        } catch (e) {
            log.error(tag, "从本地存储移除登录信息失败:", e);
        }
    }
}